package no.group.gowther.service.dto;

import org.springframework.util.Base64Utils;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;

public class ImageCode {
    private final String imageCode;

    public ImageCode(Path imagePath) {
        this.imageCode = generateImageCode(imagePath);
    }

    public ImageCode(String imageCode) {
        this.imageCode = imageCode;
    }

    public String generateImageCode(Path imagePath) {
        return Base64Utils.encodeToString(imagePath.toString().getBytes(StandardCharsets.UTF_8));
    }

    public Path decodeImageCode() {
        String imagePath = new String(Base64Utils.decodeFromString(imageCode), StandardCharsets.UTF_8);
        return Paths.get(imagePath);
    }

    /**
     * 获取base64编码后的imageCode，不能直接作为接口返回结果，仅在系统内部使用，可以直接decode
     * @return
     */
    public String getImageCode() {
        return imageCode;
    }

    /**
     * 获取被urlencode后的imageCode，这个是直接作为接口返回结果，回传给服务端时会自动urldecode
     * @return
     */
    public String getUrlEncodeImageCode() {
        return URLEncoder.encode(imageCode, StandardCharsets.UTF_8);
    }
}
